package com.jyg.order;

import com.jyg.feign.clients.UserClient;
import com.jyg.feign.config.DefaultFeignConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("com.jyg.order.mapper")
@SpringBootApplication
// 启动类添加注解开启Feign的功能：开启相关的自动装配
// clients 指定的Client类，
// defaultConfiguration配置类，是全局生效，要局部生效
@EnableFeignClients(clients = UserClient.class, defaultConfiguration = DefaultFeignConfiguration.class)

// 扫描包的方式
//@EnableFeignClients(basePackages = "com.jyg.feign.clients")
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    //去eureka-server中拉取user-service服务的实例列表，并且实现负载均衡。
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
//通过定义IRule实现可以修改负载均衡规则，有两种方式：@Bean
    // 2 配置文件方式：在order-service的application.yml文件中，添加新的配置也可以修改规则：
   /* @Bean
    public IRule randomRule() {
        return new RandomRule();
    }*/
}